// 封装axios
import axios from "axios";
// 导入vant组件库
import { Toast } from 'vant'
import $router from '../router/index'
// import { onErrorCaptured } from "vue";
// 实例化axios对象】
var service = axios.create({
    // 设置请求响应时间
    timeout: 10000,
    // 设置基准路径
    baseURL: "/api"
})
// 设置请求拦截器
service.interceptors.request.use(
    (config) => {
        // 请求发出前会立即自动执行的回调函数
        // 设置请求头
        config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token');
        Toast.loading({ message: 'loading...', duration: 0 })
        return config
    }, (error) => {
        return Promise.reject(error);
    }
)
// 设置响应拦截器
service.interceptors.response.use(
    (res) => {//响应从服务器返回时，会立即自动执行的回调函数
        Toast.clear()//隐藏loading
        return res;
    }, (error) => {//请求从服务器返回前，发生错误的回调函数
        //error 是响应错误对象
        Toast.clear()//隐藏loading
        if (error.response.status == 401) {//通过判断status状态码，返回响应的内容
            Toast.fail('身份认证过期,请重新登录!');
            localStorage.removeItem('token')
            $router.push('/login')//登陆过期回跳到登录页面
        }
        else if (error.response.status == 404) {
            Toast.fail('访问路径有误!');
        }
        else if (error.response.status == 500) {
            Toast.fail('服务器内部错误! 请联系管理员处理!');
        }
        return Promise.reject(error);
    }
)
//抛出axios实例化对象
export default service